package Objects
{
	import Controller.BasicController;

	/**
	 * 可以活动的游戏对象
	 */
	public class ActionObject extends GameObject
	{
		public static const UP:uint = 1;
		public static const DOWN:uint = 2;
		public static const LEFT:uint = 3;
		public static const RIGHT:uint = 4;
		
		/**
		 * 移动速度
		 */
		protected var speed:Number = 1.2;
		/**
		 * 移动方向
		 */
		protected var walkDirection:uint = 0;
		/**
		 * 控制器
		 */
		protected var controller:BasicController;
		
		/**
		 * 在建立对象的时候，需要传递控制器进来
		 * @param p_ctrl
		 */
		public function ActionObject(p_ctrl:BasicController)
		{
		 	controller = p_ctrl;
			controller.target = this;//将控制器的控制目标设为自己
		}
		
		/**
		 * 更改移动方向
		 */
		public function set direction(p_dir:uint):void
		{
			walkDirection = p_dir;
		}
		
		/**
		 * 移动
		 */
		protected function move():void
		{
			//根据不同的方向移动
			switch(walkDirection){
				case UP:
					y -= speed;
					break;
				case DOWN:
					y += speed;
					break;
				case LEFT:
					x -= speed;
					break;
				case RIGHT:
					x += speed;
					break;
				default:
					break;
			}
			
		}
		
		/**
		 * 覆盖父类的Do方法
		 */
		override public function Do():void
		{
			if ( walkDirection != 0 ){
				move();
			}
			super.Do();
		}
		override public function die():void
		{
			controller.die();//当自己被删除的时候，通知控制器卸载侦听，释放内存
		}
	}
}